Replaces the characters intersecting with the specified rectangles at the specified percentage.
public bool ReplaceIntersectedCharacters(
IEnumerable<LeadRect> bounds,
char replaceCharacter,
int intersectionPercentage
)
bounds
List of rectangles containing the bounds to check. These values are in pixels.
replaceCharacter
The new character code to use. Use 0 to delete the characters.
intersectionPercentage
Intersection percentage between each character and bounds.
true if one or more characters were replaced; otherwise, false.
This is a helper method used to quickly perform actions such as redacting or removing characters from the recognition data based on their locations.
intersectionPercentage can be used to control the percentage of intersection on which to perform the operation as follows:
intersectionPercentage value of 0 means use the default percentage of 50%.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Ocr;
using Leadtools.Forms.Common;
using Leadtools.Document.Writer;
using Leadtools.WinForms;
using Leadtools.Drawing;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Color;
public void OcrAndRedactToPdf()
{
string tifFileName = Path.Combine(LEAD_VARS.ImagesDir, "OCR1.tif");
string pdfFileNameBefore = Path.Combine(LEAD_VARS.ImagesDir, "OCR-Redact-Before.pdf");
string pdfFileNameAfter = Path.Combine(LEAD_VARS.ImagesDir, "OCR-Redact-After.pdf");
// Create OCR engine
using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD))
{
ocrEngine.Startup(null, null, null, LEAD_VARS.OcrLEADRuntimeDir);
// Load the OCR1.tif image and recognize it
RasterImage image = ocrEngine.RasterCodecsInstance.Load(tifFileName, 1);
using (IOcrPage ocrPage = ocrEngine.CreatePage(image, OcrImageSharingMode.AutoDispose))
{
ocrPage.Recognize(null);
// Save it, note that all the data is in the result PDF file, including "Fast Facts"
using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument(null, OcrCreateDocumentOptions.AutoDeleteFile))
{
ocrDocument.Pages.Add(ocrPage);
ocrDocument.Save(pdfFileNameBefore, DocumentFormat.Pdf, null);
}
// Now, redact "Fast Facts", this could be an input from the user based on rubber banding or Regex.
LeadRect redactRect = LeadRect.FromLTRB(300, 800, 730, 900);
char replaceCharacter = '*';
IOcrPageCharacters ocrPageCharacters = ocrPage.GetRecognizedCharacters();
ocrPageCharacters.ReplaceIntersectedCharacters(new LeadRect[] { redactRect }, replaceCharacter);
ocrPage.SetRecognizedCharacters(ocrPageCharacters);
// Save it again, note that "Fast Facts" is replaced with * characters
using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument(null, OcrCreateDocumentOptions.AutoDeleteFile))
{
ocrDocument.Pages.Add(ocrPage);
ocrDocument.Save(pdfFileNameAfter, DocumentFormat.Pdf, null);
}
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
public const string OcrLEADRuntimeDir = @"C:\LEADTOOLS23\Bin\Common\OcrLEADRuntime";
}